package com.songyl.util;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.*;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CodeGenerator {
    public static void main(String[] args) {

        //创建AutoGenerator
        AutoGenerator generator = new AutoGenerator();

        //创建全局配置实体
        GlobalConfig globalConfig = new GlobalConfig();
        // 输出目录
        globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java/");
        // 生成后是否打开目录
        globalConfig.setOpen(false);
        // 设置作者，将会显示在生成的类注释中
        globalConfig.setAuthor("SYL");
        // 设置是否覆盖原有文件
        globalConfig.setFileOverride(false);
        // 将设置应用到generator上
        generator.setGlobalConfig(globalConfig);


        //创建数据源配置实体，用于自动生成实体类
        DataSourceConfig dataSourceConfig = new DataSourceConfig();

        // 设置数据库驱动
        dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
        dataSourceConfig.setUrl("jdbc:mysql://localhost:3336/book?serverTimezone=UTC");
        dataSourceConfig.setUsername("root");
        dataSourceConfig.setPassword("123456");
        // 将设置应用到generator上
        generator.setDataSource(dataSourceConfig);


        //创建数据表策略实体
        StrategyConfig strategyConfig = new StrategyConfig();
        // 设置需要生成的表，与exclude二选一配置
        strategyConfig.setExclude("");
        //strategyConfig.setInclude("Customer");
        // 设置实体类是否使用lombok
        strategyConfig.setEntityLombokModel(false);
        // 设置实体类是否添加SerialVersionUID
        strategyConfig.setEntitySerialVersionUID(false);
        //strategyConfig.setRestControllerStyle(true);
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        // 将设置应用到generator上
        generator.setStrategy(strategyConfig);


        //包配置
        PackageConfig packageConfig = new PackageConfig();
        // 设置父包名
        packageConfig.setParent("com.songyl");
        // 将设置应用到generator上
        generator.setPackageInfo(packageConfig);

        // 模板设置
        TemplateConfig templateConfig = new TemplateConfig();
        // 不生成指定的模板
        templateConfig.disable(TemplateType.CONTROLLER, TemplateType.XML);
        // 将设置应用到generator上
        generator.setTemplate(templateConfig);

        // 开始生成
        generator.execute();
    }
}
